home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 8
/
Aminet 8 (1995)(GTI - Schatztruhe)[!][Oct 1995].iso
/
Aminet
/
text
/
hyper
/
gmake.lha
/
gmake
/
c_source
/
main.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-08-22
|
5KB
|
263 lines
// Program Amiga Guide Compiler
// Author Gary Greenhill
#include "main.h"
#include "info.h"
// Main entry point.. no wbmain()
main()
{
// Initialisation proceedures
initialise_values();
command_line_intput();
initialise_debug(debug);
// Attempt to open the GMAKEFILE
if (open_gmakefile(gmakefile))
{
REM ("GMAKEFILE open");
getdata_gmakefile();
check_guidefile();
if (open_guidefile())
{
REM ("GUIDEFILE open");
init_guidefile();
set_pagelist();
my_type++;
node_main();
node_standard();
node_pages();
REM ("Done!");
}
}
// shutdown procedures
shut_down();
}
copy_node(char * node)
{
if(open_file(node))
{
file_to_guide();
close_file();
}
}
node_pages()
{
int num,max,page;
MTEXT filename;
MTEXT nodename;
MTEXT nodedesc;
REM("Begining PAGE nodes");
max = page_num();
for(num = max,page=1; num >0;num--)
{
MTEXT text;
sprintf(nodename,"PAGE%d", page);
strcpy (filename,page_file(num));
strcpy (nodedesc, get_nodedesc());
NOTE("Page node: ", nodedesc);
sprintf(text,"@node %s \"%s\"",
nodename, nodedesc);
txt_to_guide(text);
sprintf(text,"@prev %s",last_node_name);
txt_to_guide(text);
copy_node(filename);
page++;
if(page < max)
{
MTEXT next;
sprintf(next,"@next PAGE%d", page);
}
txt_to_guide("@endnode");
strcpy(last_node_name,nodename);
}
}
node_standard()
{
MTEXT text;
while(my_type != PAGE)
{
MTEXT filename;
MTEXT nodename;
MTEXT nodedesc;
strcpy (filename, getfilename(my_type));
strcpy (nodename, txt_type(my_type));
strcpy (nodedesc, get_nodedesc());
NOTE("Standard node: ", nodedesc);
sprintf(text,"@node %s \"%s\"",
nodename, nodedesc);
txt_to_guide(text);
sprintf(text,"@prev %s",last_node_name);
txt_to_guide(text);
copy_node(filename);
my_type++;
if(find_node())
{
MTEXT next;
strcpy(next,"@next ");
strcat(next,txt_type(my_type));
txt_to_guide(next);
}
else if(my_type == PAGE)
{
if (exist_type(PAGE))
{
txt_to_guide("@next PAGE1");
}
}
txt_to_guide("@endnode");
strcpy(last_node_name,nodename);
}
}
node_midmain()
{
int index = 1;
FileType ft;
int max,num,page;
ft = POST;
ft++;
REM ("Index standard files");
txt_to_guide("\n\tContents");
while(ft != PAGE)
{
if(exist_type(ft))
{
MTEXT nodename;
MTEXT nodedesc;
MTEXT text;
getfilename(ft); // Needed to get the correct descip.
strcpy (nodename, txt_type(ft));
strcpy (nodedesc, get_nodedesc());
NOTE("Adding contents node: ", nodename);
sprintf(text, "\t%d\t@\{\"%s%s\" link %s\}",
index, nodedesc,
space_control(nodedesc), nodename);
index++; txt_to_guide(text);
}
ft++;
}
REM("Index page files");
max = page_num();
for(num = max,page=1; num >0;num--)
{
MTEXT nodename;
MTEXT nodedesc;
MTEXT text;
sprintf(nodename,"PAGE%d", page);
page_file(num); // To get the correct desc
strcpy (nodedesc, get_nodedesc());
sprintf(text, "\t%d\t@\{\"%s%s\" link %s\}",
index, nodedesc,
space_control(nodedesc), nodename);
index++;page++; txt_to_guide(text);
}
REM("End Contents");
txt_to_guide("\n");
}
node_main()
{
MTEXT pre;
MTEXT post;
REM ("Begining MAIN section");
txt_to_guide("@node MAIN \"Introduction\"");
REM ("MAIN pre section");
strcpy(pre,getfilename(PRE));
copy_node(pre);
my_type++;
REM ("MAIN mid section");
node_midmain();
REM ("MAIN post section");
strcpy(post,getfilename(POST));
copy_node(post);
my_type++;
REM ("Ending MAIN section");
if(find_node())
{
MTEXT next;
strcpy(next,"@next ");
strcat(next,txt_type(my_type));
txt_to_guide(next);
}
txt_to_guide("@endnode");
strcpy(last_node_name,"MAIN");
}
BOOL find_node()
{
while(my_type < PAGE)
{
if(exist_type(my_type))
return TRUE;
my_type++;
}
return FALSE;
}
// Close Down stuff
shut_down()
{
dwait();
printf("Finished!\n");
close_files();
close_debug();
}
// Initial values
initialise_values()
{
init_typearray();
strcpy(gmakefile,"gmakefile");
my_type=GUIDE;
}
// Read in the command line input;
command_line_intput()
{
rda = ReadArgs(ArgStr, ArgArray, rda);
if (ArgArray[0])
strcpy(gmakefile,ArgArray[0]);
if (ArgArray[1])
debug = TRUE;
FreeArgs(rda);
}